from PIL import Image
def parse_bg_captcha(img_path, im_show=False, save_path=None):
    # 图片还原顺序，定值
    _Ge = [39, 38, 48, 49, 41, 40, 46, 47, 35, 34, 50, 51, 33, 32, 28, 29, 27, 26, 36, 37, 31, 30, 44, 45, 43,
           42, 12, 13, 23, 22, 14, 15, 21, 20, 8, 9, 25, 24, 6, 7, 3, 2, 0, 1, 11, 10, 4, 5, 19, 18, 16, 17]
    w_sep, h_sep = 10, 80

    with Image.open(img_path) as img:
        img_cut_list = []  # 存储裁剪后的图像块
        for idx in range(len(_Ge)):
            x = _Ge[idx] % 26 * 12 + 1
            y = h_sep if _Ge[idx] > 25 else 0
            img_cut = img.crop((x, y, x + w_sep, y + h_sep))
            img_cut_list.append(img_cut)

        new_img = Image.new('RGB', (260, 160))
        for idx, img_cut in enumerate(img_cut_list):
            new_x = idx % 26 * 10
            new_y = h_sep if idx > 25 else 0
            new_img.paste(img_cut, (new_x, new_y))

    # 可视化还原结果
    if im_show:
        new_img.show()

    # 保存还原结果
    if save_path:
        new_img.save(save_path)

    return new_img
parse_bg_captcha('background.jpg', im_show=False, save_path='bg.jpg')

